Proof as Programs